﻿using System;
using System.Collections;
using SharpTrainer.Util;
using Zeus.Thunder.Core;

namespace SharpTrainer.Collections
{
    class ArrayListTest : ITestCase
    {
        public void Run()
        {
            var lst = new ArrayList();
            lst.Add(1); // { 1 }
            Display(lst);

            lst.AddRange(new[] { 2, 3, 7, 6, 5, 4 }); // { 1, 2, 3, 7, 6, 5, 4 }
            Display(lst);

            lst.Insert(index: 0, value: 0); // { 0, 1, 2, 3, 7, 6, 5, 4 }
            Display(lst);

            lst.RemoveAt(index: 4); // { 0, 1, 2, 3, 6, 5, 4 }
            Display(lst);

            lst.Remove(obj: 1); // { 0, 2, 3, 6, 5, 4 }
            Display(lst);

            lst.RemoveRange(index: 2, count: 3); // { 0, 2, 4 }
            Display(lst);

            lst.Reverse(); // { 4, 2, 0 }
            Display(lst);

            lst.Sort(); // { 0, 2, 4 }
            Display(lst);

            bool hasTwo = lst.Contains(2); // true
            Console.WriteLine(hasTwo);

            int two = (int)lst[1]; // 2
            Console.WriteLine(two);
        }

        private void Display(ArrayList lst)
        {
            //CollectionUtil.PrintArrayList(lst);
            CollectionUtil.ListAll(lst);
        }
    }
}
